package com.google.code.xconf;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class Property {

    protected String name;
    protected List<String> values = new ArrayList<>();

    public Property() {
    }

    public Property(String name) {
        this.name = name;
    }

    public Property(String name, Collection<String> values) {
        this.name = name;
        this.values.addAll(values);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<String> getValues() {
        return values;
    }

    public String firstValue() {
        if (values.isEmpty()) {
            return null;
        }
        return values.get(0);
    }

    public String lastValue() {
        if (values.isEmpty()) {
            return null;
        }
        return values.get(values.size() - 1);
    }

    public String getValue(int index) {
        return values.get(index);
    }

    public Integer getIntValue(int index) {
        return Integer.valueOf(values.get(index));
    }

    public int numValues() {
        return values.size();
    }

    public void addValues(Collection<String> values) {
        this.values.addAll(values);
    }

    public void addValue(String value) {
        this.values.addAll(values);
    }

    public boolean hasValues() {
        return !values.isEmpty();
    }

    public boolean containsValue(String value) {
        return containsValue(value, false);
    }

    public boolean containsValue(String value, boolean ignoreCase) {
        for (String existing : values) {
            if (ignoreCase ? existing.equalsIgnoreCase(value) : existing.equals(value)) {
                return true;
            }
        }
        return false;
    }

    @Override
    public String toString() {
        return "Property{" +
                "name='" + name + '\'' +
                ", values=" + values +
                '}';
    }
}
